<!DOCTYPE html>
<html lang="zh-cn">
    <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="generator" content="Hugo 0.16" />
    <title>2016年项目总结</title>
    
    
    
    <meta name="description" content="description" />
    <meta name="keywords" content='first,article' />
    
        <meta name="author" content="bk201sama" />
    
    
    <link href="" rel="alternate" type="application/rss+xml" title="fuck everyday" />
    <link rel="stylesheet" href="https://bk201sama.github.io/css/bootstrap.min.css" />
    <link rel="stylesheet" href="https://bk201sama.github.io/css/highlightjs-themes/androidstudio.css" />
    <link rel="stylesheet" href="https://bk201sama.github.io/css/font-awesome.min.css" />
    <link rel="stylesheet" href="https://bk201sama.github.io/css/phlat.css" />
    
        
            <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
            <script>
                (adsbygoogle = window.adsbygoogle || []).push({
                    google_ad_client: "ca-pub-XXXXXX",
                    enable_page_level_ads: true
                });
            </script>
        
    
</head>

    <body>
        <nav class="navbar navbar-default navbar-fixed-top">
    <div class="container">
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="/">fuck everyday</a>
        </div>
        <div id="navbar" class="navbar-collapse collapse">
            <ul class="nav navbar-nav navbar-right">
                
                    <li>
                        <a href="/">
                            Home
                        </a>
                    </li>
                
                    <li>
                        <a href="/about/">
                            About
                        </a>
                    </li>
                
            </ul>
        </div>
    </div>
</nav>

        <div id="top" class="container">
            <div class="row" id="content-main">
                <div class="col-md-8">
                    <div class="row">
    <div class="col-md-12 content-card">
        <h1>2016年项目总结</h1>
        
            
            <ul class="list-inline meta">
                <li><i class="fa fa-calendar"></i>March 15, 2016</li>
                <li><i class="fa fa-user"></i>bk201sama</li>
                
                    
                    <li><i class="fa fa-folder"></i><a href="https://bk201sama.github.io/categories/hardware">hardware</a></li>
                
            </ul>
        
        
    <ul class="list-inline share" style="margin-top: 15px; margin-left: 0px">
        <li class="facebook-share"><a target="_blank" href="http://www.facebook.com/sharer.php?u=https%3a%2f%2fbk201sama.github.io%2f2016%2f03%2f2016%25E5%25B9%25B4%25E9%25A1%25B9%25E7%259B%25AE%25E6%2580%25BB%25E7%25BB%2593%2f"><i class="fa fa-facebook fa-lg"></i>Facebook</a></li>
        <li class="googleplus-share"><a target="_blank" href="https://plus.google.com/share?url=https%3a%2f%2fbk201sama.github.io%2f2016%2f03%2f2016%25E5%25B9%25B4%25E9%25A1%25B9%25E7%259B%25AE%25E6%2580%25BB%25E7%25BB%2593%2f"><i class="fa fa-google-plus fa-lg"></i>Google+</a></li>
        <li class="twitter-share"><a target="_blank" href="https://twitter.com/share?url=https%3a%2f%2fbk201sama.github.io%2f2016%2f03%2f2016%25E5%25B9%25B4%25E9%25A1%25B9%25E7%259B%25AE%25E6%2580%25BB%25E7%25BB%2593%2f&amp;text=2016%e5%b9%b4%e9%a1%b9%e7%9b%ae%e6%80%bb%e7%bb%93"><i class="fa fa-twitter fa-lg"></i>Twitter</a></li>
        <li class="reddit-share"><a target="_blank" href="http://reddit.com/submit?url=https%3a%2f%2fbk201sama.github.io%2f2016%2f03%2f2016%25E5%25B9%25B4%25E9%25A1%25B9%25E7%259B%25AE%25E6%2580%25BB%25E7%25BB%2593%2f&amp;title=2016%e5%b9%b4%e9%a1%b9%e7%9b%ae%e6%80%bb%e7%bb%93"><i class="fa fa-reddit fa-lg"></i>Reddit</a></li>
        <li class="linkedin-share"><a target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&url=https%3a%2f%2fbk201sama.github.io%2f2016%2f03%2f2016%25E5%25B9%25B4%25E9%25A1%25B9%25E7%259B%25AE%25E6%2580%25BB%25E7%25BB%2593%2f"><i class="fa fa-linkedin fa-lg"></i>LinkedIn</a></li>
        <li class="stumbleupon-share"><a target="_blank" href="http://www.stumbleupon.com/submit?url=https%3a%2f%2fbk201sama.github.io%2f2016%2f03%2f2016%25E5%25B9%25B4%25E9%25A1%25B9%25E7%259B%25AE%25E6%2580%25BB%25E7%25BB%2593%2f&amp;title=2016%e5%b9%b4%e9%a1%b9%e7%9b%ae%e6%80%bb%e7%bb%93"><i class="fa fa-stumbleupon fa-lg"></i>StumbleUpon</a></li>
    </ul>


        

<p>2012毕业至今项目经历倒是不少，但是甚是觉得成长越来越缓慢，所以在这里做个总结。这里以倒序的方式进行（有点记不清了）。</p>

<h5 id="2015-8-2016-罗莱智子平台项目">2015-8~2016 罗莱智子平台项目</h5>

<p>这个项目的目的是做成一个类似淘宝商家后台的东西。不同商家可以对出售的商品进行管理，可以添加促销与优惠卷，可以对订单进行管理，数据分析等功能。</p>

<p>该项目首先最大的特色是使用了dubbo（无非为了集群），所以首先剖析一下dubbo。dubbo分消费者，服务提供者，注册中心，监控中心，运行容器。
运行顺序：
0. 服务容器负责启动，加载，运行服务提供者。
1. 服务提供者在启动时，向注册中心注册自己提供的服务。
2. 服务消费者在启动时，向注册中心订阅自己所需的服务。
3. 注册中心返回服务提供者地址列表给消费者，如果有变更，注册中心将基于长连接推送变更数据给消费者。
4. 服务消费者，从提供者地址列表中，基于软负载均衡算法，选一台提供者进行调用，如果调用失败，再选另一台调用。
5. 服务消费者和提供者，在内存中累计调用次数和调用时间，定时每分钟发送一次统计数据到监控中心。</p>

<p>其中注册中心使用的zookeeper。zookeeper是<a href="https://hadoop.apache.org/docs/r1.0.4/cn/hadoop_archives.html">hadoop</a>的一个组件。ZooKeeper是一个分布式的，开放源码的分布式应用程序协调服务，解决了用户想知道节点“是否活着？”的问题。所以运行该项目须<a href="http://coolxing.iteye.com/blog/1871009">启动zookeeper</a>先<code>bin/zkServer.sh start</code>。zookeeper客户端连接<code>bin/zkCli.sh -server localhost:端口</code>。zookeeper的配置文件为conf/zoo.cfg。</p>

<p>服务提供者设置<dubbo:service interface/>（接口），并设置zookeeper注册中心注册服务。消费者<a href="dubbo:reference/">dubbo:reference/</a>(接口)订阅服务。</p>

<p>该项目也是我第一次接触<a href="http://download.csdn.net/detail/mydownloadformweb/8139883#comment">分布式</a>。
项目生产布置
<img src="http://ww1.sinaimg.cn/large/6ade82bagw1f1zzbrxvycj20ph0bf752.jpg" alt="生产布置" /></p>

<p>吐槽&amp;疑问:该项目分为服务消费者和服务提供者。既然主要提供服务的都是提供者，消费者其实只要布置一份就可以了（一个是服务内存占用，3台机器由duboo做调配，而对外的网络带宽是一定的，对于静态资源访问，加几台内网机器都没有）。根本没必要3台服务器都布置消费者，然后nginx做反向代理与负载均衡。我认为正确的分布式布置方式应该是多台服务提供者的内网服务器。一台对外服务消费者服务器，并做反向代理，并对该台机器做cdn加速，已解决带宽问题。顺便一说，duboo好像已经不更新了，所以说开源能用国外的就最好用国外的，国内开源程序和国内软件一样，不良心。</p>

<h5 id="2015-6-2015-8-webide项目">2015-6~2015-8 webIDE项目</h5>

<p>该项目提出主要是为了解决外包公司对于缺专业前端的痛点，能让后端开发人员傻瓜式的靠拖动以及填写参数值就完成前端页面的构建。我负责前端构建，参考了<a href="http://www.bootcss.com/p/layoutit/">bootstrap可视化构建工具</a>，该程序刚开始是国外的一开源程序，后来github上删除后商业了。该程序的拖动效果是使用jqueryUI实现的，由于JqueryUI与使用的bootstrap框架对jquery依赖不一致，本着最小依赖js库的原则，抛弃jqueryUI，使用了html5原生的拖动API。</p>

<p>想法：前端有时觉得太依靠第三方的库了，导致有时很多问题难以检测，后端也是这样，太多框架的引入。其实引入一个第三方东西必然是为了解决一个目前解决起来麻烦的痛点，而不应该为了一点点特效或者一小部分功能去引入，代码整洁真的看起来很舒服，这个应该算我在外包公司看到的最clean的代码了。</p>

<h5 id="2014-9-2015-6-国资仓库管理系统以及国资oa项目">2014-9~2015-6 国资仓库管理系统以及国资OA项目</h5>

<p>把2个项目放在一起说的原因是这2个项目其实是2个代码差不多，主要就是仓库可能多了条码生成以及仓库平面图。这2个项目只要是spring ，hibernate，struts2。</p>

<p>想法:这个项目最值得说的就是需求真的是一直在变，多次改需求就导致进度拖延以及BUG百出，代码丑陋。所以对于一个项目，要明确需求，这是项目经理需要去做的，也是必须要做好的。其次对于开发来讲，对于需求多变的项目，应该在代码上做好准备，绝对不能使用硬代码，所以在编码的同时也应该对将要可能发生的改变做出相应的策略。</p>

<h5 id="2014-9-2014-9-国资门户网站">2014-9~2014-9 国资门户网站</h5>

<p>该项目是建立在wordpress的基础上搭建的，找主题基本是该项目的主旨，也没啥好多说的。但是验收的时候被检测到多种安全威胁，其实都是出在插件以及主题上，所以对于插件以及主题这种第三方的东西应该慎重。
想法：最好能建立一个个人的代码仓库，存着这些可能被拿出来用的代码或者素材，这样能大大加大开发速度，当然，得确保个人代码仓库里的代码绝对熟悉，没有后门以及明显漏洞。</p>

<h5 id="2013-11-2014-9-居住证三级平台项目以及车迹行项目">2013-11~2014-9 居住证三级平台项目以及车迹行项目</h5>

<p>又把2个项目合在一起说，当然也是因为居住证三级平台项目是建立在车迹行的UI以及框架下做的。2个项目使用了ssh框架，而在前端与后端通讯上使用了ajax的框架dwr框架。它的好处就是能直接调用服务器上暴露出来的方法，仅仅需要引入一些js而已。而且可以使javabean很方便的在前端页面直接使用。总之就是更符合后端程序员的思维，但是弊病就是出了问题很难解决，比如服务器关了，它会时不时弹出英文报错。</p>

<p>想法：居住证三级平台从设计到整个项目完成基本都是独自一人完成，期间当然也有新人帮忙。在这项目里暴露的问题就是对于整个项目没有一个整体的认识考虑的真的太少太少。</p>

<h5 id="2013-2-2013-11-开罗实训基地项目">2013-2~2013-11 开罗实训基地项目</h5>

<p>该项目算是我入门java web开发的项目。使用的框架也是比较冷门的wicket。wicket这个东西与我之后遇到的框架真的不一样。该框架定义wicket组件，有点类似桌面程序cs的开发。</p>

<h5 id="2012-7-2013-2-居住证bcb项目">2012-7~2013-2 居住证BCB项目</h5>

<p>BCB应该算很古老的c++工具了，但是之前在学校可是用着还要古老的工具。BCB有点类似VB编程工具，可以拖动控件，然后编写点击事件。但是问题就是太多BCB自己的库引入以及跨版本的问题，导致出了问题真的很难去解决。那时带我入门的师傅真的很感谢他，让我每个星期做一个demo出来给他看，被骂了无数次。</p>

<p>想法：一切看上去很难理解的东西，just do it！</p>

        
    <ul class="list-inline tags" style="margin-top: 15px; margin-left: 0px">
        
            <li style=""><a href="https://bk201sama.github.io/tags/first">first</a></li>
        
            <li style=""><a href="https://bk201sama.github.io/tags/article">article</a></li>
        
    </ul>


    </div>
</div>

                    
    
        <div class="row">
            <div class="col-md-12 content-card">
                <div id="disqus_thread"></div>
                <script>
                    (function() {
                        if (window.location.hostname == "localhost") {
                            document.write("Disqus comments are unavailable while serving on localhost or 127.0.0.1");
                            return;
                        }
                        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
                        var disqus_shortname = 'shortname';
                        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
                        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
                    })();
                </script>
                <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>
            </div>
        </div>
    


                </div>
                <div class="col-md-4">
                    <div class="row">
    <div class="col-md-11 col-md-offset-1 card">
        <h5>Search</h5>
        <form action="//google.com/search" method="get" accept-charset="UTF-8" class="search-form">
            <div class="input-group">
                <input class="form-control" type="search" name="q" />
                <span class="input-group-btn">
                    <button class="btn btn-custom" type="submit"><span class="glyphicon glyphicon-search"></span></button>
                </span>
            </div>
            <input type="hidden" name="q" value="site:https://bk201sama.github.io/">
        </form>
    </div>
</div>

                    <div class="row">
    <div class="col-md-11 col-md-offset-1 card">
        <h5>Recent Posts</h5>
        <ul class="list-unstyled posts-recent">
            
                <li><a href="https://bk201sama.github.io/2016/03/2016%E5%B9%B4%E9%A1%B9%E7%9B%AE%E6%80%BB%E7%BB%93/">2016年项目总结</a></li>
            
                <li><a href="https://bk201sama.github.io/2016/03/java%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86%E6%95%B4%E7%90%86/">java基础知识整理</a></li>
            
                <li><a href="https://bk201sama.github.io/2016/03/openwrt%E5%88%9D%E4%BD%93%E9%AA%8C/">openwrt初体验</a></li>
            
                <li><a href="https://bk201sama.github.io/2016/03/%E4%B8%A2%E6%89%8B%E6%9C%BA%E6%84%9F%E6%83%B3/">丢手机感想</a></li>
            
                <li><a href="https://bk201sama.github.io/2016/03/%E4%BD%93%E9%AA%8Candriod/">体验andriod</a></li>
            
        </ul>
    </div>
</div>

                    
    
        <div class="row">
            <div class="col-md-11 col-md-offset-1 card">
                <ins class="adsbygoogle"
                    style="display:block"
                    data-ad-client="ca-pub-XXXXXX"
                    data-ad-slot="9997956765"
                    data-ad-format="auto">
                </ins>
            </div>
        </div>
    


                    
    
        <div class="row">
            <div class="col-md-11 col-md-offset-1 card">
                <h5>categories</h5>
                <ul class="list-unstyled posts-recent">
                    
                        <li><a href="https://bk201sama.github.io/categories/hardware">hardware</a></li>
                    
                        <li><a href="https://bk201sama.github.io/categories/java">java</a></li>
                    
                        <li><a href="https://bk201sama.github.io/categories/life">life</a></li>
                    
                        <li><a href="https://bk201sama.github.io/categories/javascript">javascript</a></li>
                    
                </ul>
            </div>
        </div>
    

    


                    <div class="row">
    <div class="col-md-11 col-md-offset-1 card">
        <h5>Support This Site</h5>
        <p>
            If my blog was helpful to you, then please consider visiting my
            <a href="http://amzn.com/w/1YU2424SGEF1B">Amazon Wishlist</a> or donating via <a href="https://paypal.me/nraboy">Paypal</a>
            or <a href="https://cash.me/$nraboy">Square Cash</a>
        </p>
    </div>
</div>

                </div>
            </div>
        </div>
        <footer class="footer">
    <div class="container">
        <div class="row">
            <div class="col-md-8 col-xs-6">
    <ul class="list-inline links">
        
            <li>
                <a href="/privacy-policy/">
                    Privacy Policy
                </a>
            </li>
        
    </ul>
</div>

            <div class="col-md-4 col-xs-6">
    <ul class="list-inline social-media">
        
        
        
        
        
        
        
        
        
        
        
    </ul>
</div>

        </div>
        <div class="row">
            <div class="col-md-12">
                <p>
                    <a href="https://github.com/nraboy/hugo-phlat-theme">Phlat Theme</a> designed and built by <a href="http://www.nraboy.com">Nic Raboy</a> in San Francisco, California.
                </p>
            </div>
        </div>
    </div>
</footer>

        <div id="back-to-top" class="hidden">
    <a href="#top" class="well well-sm" onclick="$('html,body').animate({scrollTop:0},'slow');return false;">
        <i class="glyphicon glyphicon-chevron-up"></i> Back to Top
    </a>
</div>
<script src="https://bk201sama.github.io/js/jquery-2.2.1.min.js"></script>
<script src="https://bk201sama.github.io/js/bootstrap.min.js"></script>
<script src="https://bk201sama.github.io/js/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script>
    if(($(window).height() + 100) < $(document).height()) {
        $('#back-to-top').removeClass('hidden').affix({
            offset: {
                top: 100
            }
        });
    }
</script>

    
        <script>
            
            [].forEach.call(document.querySelectorAll('.adsbygoogle'), function() {
                (adsbygoogle = window.adsbygoogle || []).push({});
            });
        </script>
    


    
    <script>
        (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
        (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
        m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
        })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
        ga('create', 'UA-XXXXX-YY', 'auto');
        ga('send', 'pageview');
    </script>




    </body>
</html>
